﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net;
using System.Configuration;
using System.IO;

namespace TCC_Hotel.Serviços.OtherServices
{
    public class ExternalService
    {
        /// <summary>
        /// Servico de envio de SMS usando o servidor MisterpostMan
        /// </summary>
        /// <param name="Mensagem">Mensagem que sera enviada</param>
        /// <param name="Celular">Celular que sera enviado</param>
        public bool EnviarSMS(string Mensagem, string Celular)
        {
            string Retorno = null;
            string URL = "";
            
            //pega as informações de autenticação do postman
            string UserID = ConfigurationManager.AppSettings["UserID-PostMan.com"];
            string token = ConfigurationManager.AppSettings["Token-PostMan.com"];


            //Monta a URL para dar o GET 
            URL = "http://www.misterpostman.com.br/gateway.aspx?UserID=" + UserID + "&Token=" + token + "&Remetente=551996652980" + "&NroDestino=55" + Celular + "&Mensagem=" + Mensagem + "&Descricao=ProdutoVendido";

            // Dá um GET na URL usando objeto WebClient - Necessário Imports System.Net e System.IO
            WebClient webClient = new WebClient();                  

            //tenta 5 vezes enviar a mensagem
            for (int i = 0; i < 5; i++)
            {
                try
                {
                    Stream mystream = webClient.OpenRead(URL);
                    StreamReader sr = new StreamReader(mystream);

                    // Lê a resposta enviada pelo Gateway
                    Retorno = sr.ReadToEnd();

                    if (((Retorno.IndexOf("OK") + 1) > 0))
                    {
                        return true;
                    }
                }
                catch (Exception)
                {
                    return false;
                }
            }
            return false;
        }

        /// <summary>
        /// Servico de envio de email usando o servidor gmail.com
        /// </summary>
        /// <param name="Mensagem">email do fornecedor</param>
        /// <param name="Celular">Corpo do email</param>
        public void EnviarEmailFornecedor(string EmailFornecedor, string CorpoEmail)
        {
            MailMessage mail = new MailMessage();
            string email = ConfigurationManager.AppSettings["Email-Gmail.com"];

            //define os endereços
            mail.From = new MailAddress(email);
            mail.To.Add(EmailFornecedor);

            //define o conteúdo
            mail.Subject = "Solicitação de compra";
            mail.Body = CorpoEmail;


            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

            client.EnableSsl = true; //Gmail works on Server Secured Layer


            string senha = ConfigurationManager.AppSettings["Senha-Gmail.com"];
            NetworkCredential cred = new NetworkCredential(email, senha);
            client.Credentials = cred;
            client.Send(mail);
        }

        /// <summary>
        /// Servico de envio de email para a empresa coma conta dos hóspedes usando o servidor gmail.com
        /// </summary>
        /// <param name="Mensagem">email da empresa</param>
        /// <param name="Celular">Corpo do email</param>
        /// <param name="Celular">Arquivo PDF gerado</param>
        public bool EnviarEmailEmpresa(string EmailEmpresa, string CorpoEmail, byte[] vet)
        {
            MailMessage mail = new MailMessage();
            string email = ConfigurationManager.AppSettings["Email-Gmail.com"];

            //define os endereços
            mail.From = new MailAddress(email);
            mail.To.Add(EmailEmpresa);

            //define o conteúdo
            mail.Subject = "Conta dos hóspedes";
            mail.Body = CorpoEmail;

            // Recupera o binario enviado pelo FileUpload

            MemoryStream MS = new MemoryStream(vet);

            // Anexa o Stream do arquivo    
            Attachment anexo = new Attachment(MS, "Conta.pdf");
            mail.Attachments.Add(anexo);


            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

            client.EnableSsl = true; //Gmail works on Server Secured Layer


            string senha = ConfigurationManager.AppSettings["Senha-Gmail.com"];
            NetworkCredential cred = new NetworkCredential(email, senha);
            client.Credentials = cred;
            try
            {
                client.Send(mail);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

    }
}